//
// Created by iimt on 21-3-20.
//

#include <QtWidgets/QApplication>
#include <QCoreApplication>
#include <QString>
#include <QFormLayout>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QMessageBox>
#include <QtSql/QSqlRecord>
#include <QDebug>

#include "KSDemoDlgtaskTme.h"


/**************************************************************************
* 函数名称：KSDemoDlgtaskTme
* 函数功能：目标点管理对话框构造函数
* 输入参数：无
* 输出参数：无
* 返回数值：void
* 创建人员：
* 创建时间：2021-03-20
* 修改人员：
* 修改时间：
**************************************************************************/
KSDemoDlgtaskTme::KSDemoDlgtaskTme( QWidget *parent):QDialog(parent, Qt::WindowCloseButtonHint | Qt::WindowMinMaxButtonsHint | Qt::WindowStaysOnTopHint),
                                                                                   m_Group(this), m_PrimaryKeyLabel(this), m_PrimaryKeyLineEdit(this), m_QueryButton(this), m_NewButton(this), m_UpdateButton(this), m_DeleteButton(this), m_TabView(NULL),
                                                                                   m_OKButton(this),m_CancelButton(this),m_operator(-1)
{


    //=====================================================================
    // sukai
    //1.获取点位链表数据
    //maptestInfos_list =   IIMTDriver::getInstance()->maptestInfos_list;
    item_model = new QStandardItemModel();
    m_TabView = new QTableView(this);
    m_TabView->setEditTriggers(QAbstractItemView::NoEditTriggers);	//设置内容不可编辑
    //sukai
    //请选择点位
    markNameqbox =   new QComboBox(this);
    /*************关联槽函数*********************/
    connect(&m_NewButton, SIGNAL(clicked()), this, SLOT(onNewButtonClicked()));
    connect(&m_QueryButton, SIGNAL(clicked()), this, SLOT(onQueryButtonClicked()));
    connect(&m_UpdateButton, SIGNAL(clicked()), this, SLOT(onUpdateButtonClicked()));
    connect(&m_DeleteButton, SIGNAL(clicked()), this, SLOT(onDeleteButtonClicked()));
    connect(&m_RefreshButton, SIGNAL(clicked()), this, SLOT(onRefreshButtonClicked()));
    connect(&m_PrimaryKeyLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(onPrimaryKeyLineEditEmpty(const QString &)));
    connect(m_TabView, SIGNAL(clicked(const QModelIndex &)), this, SLOT(onCurrentTableViewClicked(const QModelIndex &)));
    connect(&m_OKButton, SIGNAL(clicked()), this, SLOT(onOKButtonClicked()));
    connect(&m_CancelButton, SIGNAL(clicked()), this, SLOT(onCancelButtonClicked()));

    //获取点位数据 111
      connect(markNameqbox, SIGNAL(currentIndexChanged(int)), markNameqbox, SLOT(on_mapnames_currentIndexChanged(int)));
    //sukai
       updateTimer = new QTimer(this);
       updateTimer->setInterval(500);

    connect(updateTimer, &QTimer::timeout, this, &KSDemoDlgtaskTme::onUpdate);
    /*************模型关联视图*******************/
    //m_TabView->setModel(m_model);

    //sukai
    m_TabView->setModel(item_model);
    /*************选中行为为整行选中*************/
    m_TabView->setSelectionBehavior(QAbstractItemView::SelectRows);
    /*************对话框窗体初始化***************/
    //sukai
    //增加表格列名
    addHeaderData();
    //灵活增加界面右侧数据显示形式
    addrow();
    UiInit();
    /*************对话框窗体初始化***************/
    setFixedSize(900, 500);
    setWindowTitle(QStringLiteral("定时任务_TCP_GUI"));

    setCallBack();
}

/**************************************************************************
* 函数名称：
* 函数功能：填充数据
* 输入参数：无
* 输出参数：无
* 返回数值：void
* 创建人员：
* 创建时间：2021-03-20
* 修改人员：
* 修改时间：
**************************************************************************/
//QString msg="/api/markers/query_name_list";
//sendMsg(msg);
//填充数据
//获取定时任务表中的数据
void KSDemoDlgtaskTme::setKSDemoDlg_task_time_flg_CallBack(function<void(int)> kSDemoDlg_task_time_flg_CallBack1){
    this->kSDemoDlg_task_time_flg_CallBack = kSDemoDlg_task_time_flg_CallBack1;

};
//sukai 发送数据
void KSDemoDlgtaskTme::sendMsg(QString msg)
{
  IIMTDriver::getInstance()->sendMsg(msg);

}
//sukai 设置返回函数
void KSDemoDlgtaskTme::setCallBack()
{

    //sukai 定时任务 传到编辑类 KSDemoDlgtaskTime 中
    IIMTDriver::getInstance()->setKSDemoDlg_task_timeCallBack([this](QList<QMap<QString, QString> > kSDemoDlg_task_time_list){
        try {
            //sukai 填充数据
            setdata(kSDemoDlg_task_time_list);
            /*************对话框窗体初始化***************/

            qDebug()<<" =======================  定时任 ========================== ";
//            for (int i = 0; i <kSDemoDlg_task_time_list.size() ; ++i) {
//                 qDebug()<<" ========================== 定时任============================ =="<<kSDemoDlg_task_time_list.at(i)["id"];//id唯一号
//                qDebug()<<"map  Id =="<<kSDemoDlg_task_time_list.at(i)["id"];//id唯一号
//                qDebug()<<" RobotNumber =="<<kSDemoDlg_task_time_list.at(i)["robotNumber"];//机器人编号 SLAMWARE-812370
//                qDebug()<<" Equipment_1 =="<<kSDemoDlg_task_time_list.at(i)["equipment_1"];//设备1   //紫外灯消毒是否开启 开启，关闭 Disinfectlamp
//                qDebug()<<" Equipment_2 =="<<kSDemoDlg_task_time_list.at(i)["equipment_2"];//设备2   喷雾是否开启 开启，关闭 Spray
//                qDebug()<<" TargetName =="<<kSDemoDlg_task_time_list.at(i)["markName"];//路点名称 //区域号 Area
//                qDebug()<<" StartTime =="<<kSDemoDlg_task_time_list.at(i)["startTime"];//开始时间 "202105241657"【格式】精确到分
//                qDebug()<<" EndTime =="<<kSDemoDlg_task_time_list.at(i)["endTime"];//结束时间 "202105241657"【格式】精确到分
//                qDebug()<<" Status =="<<kSDemoDlg_task_time_list.at(i)["status"];//开始标志 开启，关闭
//                qDebug()<<" WorkingStatus =="<<kSDemoDlg_task_time_list.at(i)["workingStatus"];//是否正在执行 正在运行 ，停止

//            }

        } catch (std::exception e) {
            cout << " setTime_taskCallBack 行异常！" << endl;
        }

    });

}

//sukai //增加表格列名
void KSDemoDlgtaskTme::addHeaderData(){
    //没数据时输入空数据
    QList<QMap<QString, QString>> kSDemoDlg_dictionarie_list;
    setdata(kSDemoDlg_dictionarie_list);
        //增加表格列名
        item_model->setHeaderData(0,Qt::Horizontal,"id");//id唯一号
        item_model->setHeaderData(1,Qt::Horizontal,"robotNumber");//机器人编号 SLAMWARE-812370
        item_model->setHeaderData(2,Qt::Horizontal,"equipment_1");//设备1   //紫外灯消毒是否开启 开启，关闭 Disinfectlamp
        item_model->setHeaderData(3,Qt::Horizontal,"equipment_2");//设备2   喷雾是否开启 开启，关闭 Spray
        item_model->setHeaderData(4,Qt::Horizontal,"markName");//路点名称 //区域号 Area
        item_model->setHeaderData(5,Qt::Horizontal,"startTime");//开始时间 "202105241657"【格式】精确到分
        item_model->setHeaderData(6,Qt::Horizontal,"endTime");//结束时间 "202105241657"【格式】精确到分
        item_model->setHeaderData(7,Qt::Horizontal,"status");//开始标志 开启，关闭
        item_model->setHeaderData(8,Qt::Horizontal,"workingStatus");//是否正在执行 正在运行 ，停止



}
//灵活增加界面右侧数据显示形式
void KSDemoDlgtaskTme::addrow(){
    /**************灵活增加界面右侧数据显示形式******************/
    //2. todo sukai
    //右侧列名item_model->columnCount()
     for(int i=0; i<item_model->columnCount(); i++)
     {
         m_infoLabelList.append(new QLabel(this));
         QString m_modelName= item_model->headerData(i, Qt::Horizontal).toString();
         if(m_modelName=="id"){
                   m_modelName="id";
                   //读取数据库最大的一个id号
                   int id=0;
                   QLineEdit *pEdit = new QLineEdit(this);
                   pEdit->setText(QString::number(id+1));
                   m_infoEditList.append(pEdit);
               } else if(m_modelName=="robotNumber"){
                   m_modelName="robotNumber";
                   QLineEdit *pEdit = new QLineEdit(this);
                   pEdit->setText(RobotNumber);
                   m_infoEditList.append(pEdit);
               }else if(m_modelName=="equipment_1"){
                   m_modelName="设备1是否开启";
                   QComboBox *qbox =   new QComboBox(this);
                   qbox->addItem("stop");
                   qbox->addItem("start");
                   m_infoEditList.append(qbox);//new QComboBox(this)
               }else if(m_modelName=="equipment_2"){
                   m_modelName="设备2是否开启";
                   QComboBox *qbox =   new QComboBox(this);
                   qbox->addItem("stop");
                   qbox->addItem("start");
                   m_infoEditList.append(qbox);//new QComboBox(this)

               }else if(m_modelName=="markName"){


                   //设置点位
                   markNameqbox->addItem("请选择点位");
                  // qbox->addItem("返回充电");
                  QList<TestInfo> testInfos =   IIMTDriver::getInstance()->testInfos;
                  for (int i = 0; i <testInfos.size() ; ++i) {
                      markNameqbox->addItem(testInfos.at(i).TargetName);
                  }


                   m_modelName="点位名称 ";
                   m_infoEditList.append(markNameqbox);
               }else if(m_modelName=="startTime"){
                   m_modelName="开始时间";//15:19【格式】精确到分
                   QDateTimeEdit *date= new QDateTimeEdit(this);
                  // date->setDisplayFormat("yyyy-MM-dd hh:mm:ss");
                   date->setDisplayFormat("hh:mm");
                  // date->setCalendarPopup(true);
                   m_infoEditList.append(date);

               }else if(m_modelName=="endTime"){
                   m_modelName="结束时间";
                  //结束时间 15:19【格式】精确到分
                   QDateTimeEdit *date= new QDateTimeEdit(this);
                   date->setDisplayFormat("hh:mm");
                   m_infoEditList.append(date);


               }else if(m_modelName=="status"){
                   m_modelName="开始标志";//开始标志 是否启用 ： start , stop
                   QComboBox *qbox =   new QComboBox(this);
                   qbox->addItem("stop");
                   qbox->addItem("start");
                   m_infoEditList.append(qbox);

               }else if(m_modelName=="workingStatus"){
                   m_modelName="运行状态";
       //            QLineEdit *qLine = new QLineEdit(this);
       //            qLine->setText("停止"); //运行 ，停止
       //            m_infoEditList.append(qLine);
                  // running 动作正在进行 |finished 动作已经完成或等待开始
                   QComboBox *qbox =   new QComboBox(this);
                   qbox->addItem("finished");
                   qbox->addItem("running");
                   m_infoEditList.append(qbox);

               }

        // m_infoLabelList.append(new QLabel(this));
         m_infoLabelList[i]->setText(item_model->headerData(i, Qt::Horizontal).toString());
        // m_infoEditList.append(new QLineEdit(this));
         m_infoEditList[i]->setEnabled(false);
     }
}

//sukai 填充数据
void KSDemoDlgtaskTme::setdata(QList<QMap<QString, QString> > kSDemoDlg_task_time_list)
{

    /**************灵活增加界面右侧数据显示形式******************/
    if(kSDemoDlg_task_time_list.size()<=0){
        for(int i=0; i<9; i++)
        {
            item_model->setItem(0,i,new QStandardItem(""));
        }
    }
//    //1.todo sukai
//     //================ 方法一 ================================
    for(int y=0; y<kSDemoDlg_task_time_list.size()>0; y++)
    {
         //填充列表数据
        item_model->setItem(y,0,new QStandardItem(kSDemoDlg_task_time_list.at(y)["id"]));
        item_model->setItem(y,1,new QStandardItem(kSDemoDlg_task_time_list.at(y)["robotNumber"]));
        item_model->setItem(y,2,new QStandardItem(kSDemoDlg_task_time_list.at(y)["equipment_1"]));
        item_model->setItem(y,3,new QStandardItem(kSDemoDlg_task_time_list.at(y)["equipment_2"]));
        item_model->setItem(y,4,new QStandardItem(kSDemoDlg_task_time_list.at(y)["markName"]));
        item_model->setItem(y,5,new QStandardItem(kSDemoDlg_task_time_list.at(y)["startTime"]));
        item_model->setItem(y,6,new QStandardItem(kSDemoDlg_task_time_list.at(y)["endTime"]));
        item_model->setItem(y,7,new QStandardItem(kSDemoDlg_task_time_list.at(y)["status"]));
        item_model->setItem(y,8,new QStandardItem(kSDemoDlg_task_time_list.at(y)["workingStatus"]));



    }
    /**************灵活增加界面右侧数据显示形式******************/
     //2. todo sukai
     //右侧列名
//      for(int i=0; i<item_model->columnCount(); i++)
//      {
//          m_infoLabelList.append(new QLabel(this));
//          m_infoLabelList[i]->setText(item_model->headerData(i, Qt::Horizontal).toString());
//          m_infoEditList.append(new QLineEdit(this));
//          m_infoEditList[i]->setEnabled(false);
//      }
     //==========================================方法二 列名是乱的，所以又采用方法一 ===========================================
//    for(int y=0; y<maptestInfos_list.size()>0; y++)
//    {

//              item_model->setColumnCount(maptestInfos_list.at(y).size());
//              //==========================================方法二 列名是乱的，所以又采用方法一 ===========================================
//              int i=0;
//              QMap<QString, QString>::const_iterator iter = maptestInfos_list.at(y).begin();
//                   while (iter != maptestInfos_list.at(y).end())
//                   {
//                       if(y==0){ //设置列名
//                           item_model->setHeaderData(i,Qt::Horizontal,iter.key());
//                           //


//                 }
//                       qDebug() << " KSDemoDlgtaskTme column " << column;

//                      /**************灵活增加界面右侧数据显示形式******************/
//                       //2. todo sukai
//                        for(int i=0; i<item_model->columnCount(); i++)
//                        {
//                            m_infoLabelList.append(new QLabel(this));
//                            m_infoLabelList[i]->setText(item_model->headerData(i, Qt::Horizontal).toString());
//                            m_infoEditList.append(new QLineEdit(this));
//                            m_infoEditList[i]->setEnabled(false);
//                        }
                    //===============end===========================方法二 列名是乱的，所以又采用方法一 ===========================================


}
/**************************************************************************
* 函数名称：UiInit
* 函数功能：目标点管理对话框界面初始化
* 输入参数：无
* 输出参数：无
* 返回数值：void
* 创建人员：
* 创建时间：2021-03-20
* 修改人员：
* 修改时间：
**************************************************************************/
void KSDemoDlgtaskTme::UiInit()
{
    m_PrimaryKeyLabel.setText(item_model->headerData(0, Qt::Horizontal).toString());
    m_NewButton.setText(QStringLiteral("增加"));
    m_QueryButton.setText(QStringLiteral("查询"));
    m_UpdateButton.setText(QStringLiteral("修改"));
    m_DeleteButton.setText(QStringLiteral("删除"));
    m_RefreshButton.setText(QStringLiteral("查询所有"));
    m_UpdateButton.setEnabled(true);
    m_OKButton.setText(QStringLiteral("确定"));
    m_CancelButton.setText(QStringLiteral("取消"));
    /**************灵活增加界面右侧数据显示形式******************/

    m_OKButton.setEnabled(false);
    m_CancelButton.setEnabled(false);
    /**************灵活增加界面右侧数据显示形式 END******************/
    QHBoxLayout *TotalHBoxLayout = new QHBoxLayout();
    QVBoxLayout *TotalVBoxLayout = new QVBoxLayout();
    QVBoxLayout *UserGroupVBoxLayout = new QVBoxLayout();
    QHBoxLayout *UserEditHBoxLayout = new QHBoxLayout();
    QHBoxLayout *UserButtonHBoxLayout = new QHBoxLayout();
    QFormLayout *UserPrimaryKeyFormLayout = new QFormLayout();
    QFormLayout *UserSelectFormLayout = new QFormLayout();
    QHBoxLayout *UserSelectHBoxLayout = new QHBoxLayout();
    QVBoxLayout *UserSelectVBoxLayout = new QVBoxLayout();
    /*****************界面右侧group布局******************/
    for (int i=0; i<m_infoLabelList.count(); i++)
    {
        UserSelectFormLayout->addRow( m_infoLabelList[i], m_infoEditList[i]);
    }
    UserSelectHBoxLayout->addWidget(&m_OKButton);
    UserSelectHBoxLayout->addWidget(&m_CancelButton);
    UserSelectVBoxLayout->addLayout(UserSelectFormLayout);
    UserSelectVBoxLayout->addLayout(UserSelectHBoxLayout);
    UserSelectVBoxLayout->addStretch();
    /*****************界面右侧group布局 END******************/

    UserPrimaryKeyFormLayout->addRow(&m_PrimaryKeyLabel, &m_PrimaryKeyLineEdit);
    UserEditHBoxLayout->addLayout(UserPrimaryKeyFormLayout);
    UserEditHBoxLayout->addWidget(&m_QueryButton);
    UserEditHBoxLayout->addStretch();

    UserButtonHBoxLayout->addWidget(&m_NewButton);
    UserButtonHBoxLayout->addWidget(&m_UpdateButton);
    UserButtonHBoxLayout->addWidget(&m_DeleteButton);
    UserButtonHBoxLayout->addWidget(&m_RefreshButton);
    UserGroupVBoxLayout->addLayout(UserEditHBoxLayout);
    UserGroupVBoxLayout->addLayout(UserButtonHBoxLayout);
    m_Group.setLayout(UserGroupVBoxLayout);
    TotalVBoxLayout->addWidget(&m_Group);
    TotalVBoxLayout->addWidget(m_TabView);
    TotalHBoxLayout->addLayout(TotalVBoxLayout, 3);
    TotalHBoxLayout->addLayout(UserSelectVBoxLayout, 1);
    setLayout(TotalHBoxLayout);
}
/**************************************************************************
* 函数名称：onNewUserButtonClick
* 函数功能：目标点管理对话框界新增目标点pose按钮槽函数
* 输入参数：无
* 输出参数：无
* 返回数值：void
* 创建人员：
* 创建时间：2021-03-20
* 修改人员：
* 修改时间：
**************************************************************************/
void KSDemoDlgtaskTme::onNewButtonClicked()
{
    for (int i=0; i<m_infoEditList.count(); i++)
    {
        m_infoEditList[i]->setEnabled(true);
    }
    m_operator = INSERT;
    m_OKButton.setEnabled(true);
    m_CancelButton.setEnabled(true);
    //sukai 填充数据
    markNameqbox->clear();
    markNameqbox->addItem("请选择点位");
    QList<TestInfo> testInfos =   IIMTDriver::getInstance()->testInfos;
    qDebug()<<"testInfos.size(): "<<testInfos.size();
    for (int i = 0; i <testInfos.size() ; ++i) {
        markNameqbox->addItem(testInfos.at(i).TargetName);
    }
}
/**************************************************************************
* 函数名称：onQueryUserButtonClick
* 函数功能：目标点管理对话框界查询目标点pose按钮槽函数
* 输入参数：无
* 输出参数：无
* 返回数值：void
* 创建时间：2021-03-20
* 修改人员：
* 修改时间：
**************************************************************************/
void KSDemoDlgtaskTme::onQueryButtonClicked()
{
    QString toFind = m_PrimaryKeyLineEdit.text();
    //sukai
    QString ID = item_model->headerData(0, Qt::Horizontal).toString();
    qDebug() << "ID " << ID ;

    //1.todo sukai 填充数据
    //填充数据
    updateTimer->start();
//    item_model->setFilter(ID + "=\'" + toFind + "\'");
//    item_model->select();
    //sukai 填充数据
    markNameqbox->clear();
    markNameqbox->addItem("请选择点位");
    QList<TestInfo> testInfos =   IIMTDriver::getInstance()->testInfos;
    qDebug()<<"testInfos.size(): "<<testInfos.size();
    for (int i = 0; i <testInfos.size() ; ++i) {
        markNameqbox->addItem(testInfos.at(i).TargetName);
    }
}
/**************************************************************************
* 函数名称：onUpdateButtonClicked
* 函数功能：目标点管理对话框界修改目标点pose按钮槽函数
* 输入参数：无
* 输出参数：无
* 返回数值：void
* 创建人员：
* 创建时间：2021-03-20
* 修改人员：
* 修改时间：
**************************************************************************/
void KSDemoDlgtaskTme::onUpdateButtonClicked()
{

    //sukai 填充数据
    markNameqbox->clear();
    markNameqbox->addItem("请选择点位");
    QList<TestInfo> testInfos =   IIMTDriver::getInstance()->testInfos;
    qDebug()<<"testInfos.size(): "<<testInfos.size();
    for (int i = 0; i <testInfos.size() ; ++i) {
        markNameqbox->addItem(testInfos.at(i).TargetName);
    }

    int row = m_TabView->currentIndex().row();
    int columnCount = item_model->columnCount();
     //sukai 不加会报错
    if(m_infoEditList.size()!=columnCount || m_infoLabelList.size() !=columnCount)
            return;
   //sukai
    for (int i=0; i<columnCount; i++)
    {
        QString str = item_model->data(item_model->index(row,i)).toString();//第X行第Y列的内容
        update_infoEditListSetText_new(str,true, i);
    }
  // update_infoEditListSetText(recode,true);
    m_operator = UPDATE;
    m_OKButton.setEnabled(true);
    m_CancelButton.setEnabled(true);


}
/**************************************************************************
* 函数名称：m_infoEditListSetText
* 函数功能：取数据库数据填充右边栏数据
* 输入参数：无
* 输出参数：无
* 返回数值：void
* 创建人员：
* 创建时间：2021-05-25
* 修改人员：
* 修改时间：
**************************************************************************/
//sukai
void KSDemoDlgtaskTme::update_infoEditListSetText_new(QString str,bool flg,int i)
{

        switch (i){//QLineEdit
            case 0:
            {
                QLineEdit *pEdit = (QLineEdit *) m_infoEditList[i];
                pEdit->setText(str);
            }

                break;
            case 1:
            {
                QLineEdit *pEdit = (QLineEdit *) m_infoEditList[i];
                pEdit->setText(str);
            }

                break;
            case 2://QComboBox
            {
                QComboBox *pEdit = (QComboBox *) m_infoEditList[i];
                qDebug() << "pEdit->currentText(): "<<pEdit->currentText();
                pEdit->setCurrentText(str);


            }

                break;
            case 3://QComboBox
            {
                QComboBox *pEdit = (QComboBox *) m_infoEditList[i];
                pEdit->setCurrentText(str);

            }
                break;
            case 4://QComboBox
            {
                QComboBox *pEdit = (QComboBox *) m_infoEditList[i];
                pEdit->setCurrentText(str);

            }
                break;
            case 5://QDateTimeEdit
            {
                QDateTimeEdit *pEdit = (QDateTimeEdit *) m_infoEditList[i];

                QTime dt = QTime::fromString(str, "HH:mm");
                pEdit->setTime(dt);


            }
                break;
            case 6://QDateTimeEdit
            {
                QDateTimeEdit *pEdit = (QDateTimeEdit *) m_infoEditList[i];
                QTime dt = QTime::fromString(str, "HH:mm");
                pEdit->setTime(dt);

            }
                break;
            case 7://QComboBox
            {
                QComboBox *pEdit = (QComboBox *) m_infoEditList[i];
                pEdit->setCurrentText(str);

            }
                break;

            case 8://QLineEdi
            {
//                QLineEdit *pEdit = (QLineEdit *) m_infoEditList[i];
//                pEdit->setText(recode.value(i).toString());

                QComboBox *pEdit = (QComboBox *) m_infoEditList[i];
                pEdit->setCurrentText(str);
            }
                break;
            default:
                qDebug() << "无效";

        }
        m_infoEditList[i]->setEnabled(flg);


}


/**************************************************************************
* 函数名称：onDeleteButtonClicked
* 函数功能：目标点管理对话框界删除目标点pose按钮槽函数
* 输入参数：无
* 输出参数：无
* 返回数值：void
* 创建人员：
* 创建时间：2021-03-20
* 修改人员：
* 修改时间：
**************************************************************************/
void KSDemoDlgtaskTme::onDeleteButtonClicked()
{

    ////api/time/delete?id=1
    QString  msg="/api/time/delete?id=";
    int toDelRow = m_TabView->currentIndex().row();
    if (QMessageBox::Ok == QMessageBox::warning(this, QStringLiteral("提示"), QStringLiteral("确定要删除") + item_model->data(item_model->index(toDelRow, 0)).toString() + QStringLiteral("吗?"), QMessageBox::Ok|QMessageBox::No))
    {
        msg=msg+item_model->data(item_model->index(toDelRow, 0)).toString();
         qDebug() << "Delete==== msg==== " << msg;
         sendMsg(msg);
        item_model->removeRow(toDelRow);
    }



    //填充数据
    updateTimer->start();

 //   m_model->select();
    //sukai 填充数据
    markNameqbox->clear();
    markNameqbox->addItem("请选择点位");
    QList<TestInfo> testInfos =   IIMTDriver::getInstance()->testInfos;
    qDebug()<<"testInfos.size(): "<<testInfos.size();
    for (int i = 0; i <testInfos.size() ; ++i) {
        markNameqbox->addItem(testInfos.at(i).TargetName);
    }
}
/**************************************************************************
* 函数名称：onDeleteButtonClicked
* 函数功能：目标点管理对话框界刷新目标点pose按钮槽函数
* 输入参数：无
* 输出参数：无
* 返回数值：void
* 创建人员：
* 创建时间：2021-03-20
* 修改人员：
* 修改时间：
**************************************************************************/
void KSDemoDlgtaskTme::onRefreshButtonClicked(){
//    m_model->setTable(m_DBTableName);	//重新关联数据库表，这样才能查询整个表
//    m_model->select();

//    QString msg="/api/markers/query_name_list";
//    sendMsg(msg);
    //sukai 填充数据
    markNameqbox->clear();
    markNameqbox->addItem("请选择点位");
    QList<TestInfo> testInfos =   IIMTDriver::getInstance()->testInfos;
    qDebug()<<"testInfos.size(): "<<testInfos.size();
    for (int i = 0; i <testInfos.size() ; ++i) {
        markNameqbox->addItem(testInfos.at(i).TargetName);
    }
    updateTimer->start();

}
/**************************************************************************
* 函数名称：onUserNameEditEmpty
* 函数功能：当m_UserNameEdit编辑框为空时，显示所有目标点pose
* 输入参数：无
* 输出参数：无
* 返回数值：void
* 创建人员：
* 创建时间：2021-03-20
* 修改人员：
* 修改时间：
**************************************************************************/
void KSDemoDlgtaskTme::onPrimaryKeyLineEditEmpty(const QString & text)
{
    if (text.isEmpty())
    {
//        QString msg="/api/markers/query_name_list";
//        sendMsg(msg);
        //sukai 填充数据
          updateTimer->start();

    }
}
/**************************************************************************
 * 函数名称：onCurrentTableViewActived
 * 函数功能：m_TableView视图选取当前行槽函数，内容映射到右侧目标点pose编辑中
 * 输入参数：无
 * 输出参数：无
 * 返回数值：void
 * 创建人员：
 * 创建时间：2021-03-20
 * 修改人员：
 * 修改时间：
 **************************************************************************/
void KSDemoDlgtaskTme::onCurrentTableViewClicked(const QModelIndex & index)
{
    if (!m_OKButton.isEnabled() || (INSERT == m_operator))	//只有可编辑并且操作为修改操作时才映射内容
    {
        return;
    }
    int currentRow = index.row();
//    QSqlRecord recode = m_model->record(currentRow);
//    for (int i=0; i<recode.count(); i++)
//    {
//        m_infoEditList[i]->setEnabled(true);
//        m_infoEditList[i]->setText(recode.value(i).toString());
//    }
    //sukai 不加会报错
   if(m_infoEditList.size()!=column || m_infoLabelList.size() !=column)
           return;
    //sukai
     for (int i=0; i<column; i++)
     {
         QString str = item_model->data(item_model->index(currentRow,i)).toString();//第X行第Y列的内容
//         m_infoEditList[i]->setEnabled(true);
//         m_infoEditList[i]->setText(str);
         update_infoEditListSetText_new(str,true, i);
     }

}
/**************************************************************************
 * 函数名称：onOKButtonClicked
 * 函数功能：OKButton点击槽函数，确定修改数据库
 * 输入参数：无
 * 输出参数：无
 * 返回数值：void
 * 创建人员：
 * 创建时间：2021-03-20
 * 修改人员：
 * 修改时间：
 **************************************************************************/
void KSDemoDlgtaskTme::onOKButtonClicked()
{

    QList<QString> infoTextList;
   //todo sukai
       m_infoEditListSetText(infoTextList);
       if(infoTextList.size()<=0)
           return;
//       if (infoTextList.count()<m_infoEditList.count())
//            {
//                QMessageBox::warning(this, QStringLiteral("提示"), QStringLiteral("请将内容填写完整"), QMessageBox::Ok);
//                return;
//            }
//    for (int i=0; i<m_infoEditList.count(); i++)
//    {
//       // if (m_infoEditList[i+1]->text().isEmpty())
//          if (m_infoEditList[i]->text().isEmpty())
//        {
//            QMessageBox::warning(this, QStringLiteral("提示"), QStringLiteral("请将内容填写完整"), QMessageBox::Ok);
//            return;
//        }
//    }
    switch (m_operator)
    {
        case INSERT:
        {

//  /api/time/install?markName=markName&startTime=startTime&endTime=endTime&status=status
        if (QMessageBox::Ok == QMessageBox::warning(this, QStringLiteral("提示"), QStringLiteral("请确定是否增加"), QMessageBox::Ok|QMessageBox::No))
            {
                int col = item_model->columnCount();
                int row = item_model->rowCount();
                item_model->insertRow(row);

              QString  msg="/api/time/install?";
                for (int i=0; i<col; i++)
                {


                    //sukai
                    if(m_infoLabelList[i]->text()=="markName" ){
                       if(infoTextList[i]=="EMPTY"){
                               QMessageBox::warning(this, QStringLiteral("提示"), QStringLiteral("请选择点位！"), QMessageBox::Ok);
                              return;
                       }

                    }

//                    item_model->setData(item_model->index(row, i), infoTextList[i]);
//                     if(i==0)
//                         continue;

                    if(i<(col-1)){
                        //sukai
                      msg =msg+  m_infoLabelList[i]->text()+"="+infoTextList[i]+"&";
                    }else if(i==(col-1)){//最后一位
                      msg =msg+  m_infoLabelList[i]->text()+"="+infoTextList[i];
                    }



                }
                //提交修改
                   sendMsg(msg);
                   qDebug() << "提交修改 msg " << msg;
               // item_model->submitAll();	//提交修改
            }


        }
            break;
        case UPDATE:
        {
        //     /api/time/update?id=id&markName=markName&startTime=startTime&endTime=endTime&status=status&workingStatus=workingStatus
            if (QMessageBox::Ok == QMessageBox::warning(this, QStringLiteral("提示"), QStringLiteral("请确定是否修改"), QMessageBox::Ok|QMessageBox::No))
            {
                int col = item_model->columnCount();
                int CurrentRow = m_TabView->currentIndex().row();
                QString  msg="/api/time/update?";
                for (int i=0; i<col; i++)
                {
                //sukai
                if(m_infoLabelList[i]->text()=="markName" ){
                   if(infoTextList[i]=="EMPTY"){
                           QMessageBox::warning(this, QStringLiteral("提示"), QStringLiteral("请选择点位！"), QMessageBox::Ok);
                          return;
                   }

                }

                    item_model->setData(item_model->index(CurrentRow, i), infoTextList[i]);
                    if(i<(col-1)){
                        //sukai
                      msg =msg+  m_infoLabelList[i]->text()+"="+infoTextList[i]+"&";
                    }else if(i==(col-1)){//最后一位
                      msg =msg+  m_infoLabelList[i]->text()+"="+infoTextList[i];
                    }
                }
               // item_model->submitAll();	//提交修改
                //提交修改
                sendMsg(msg);
                 qDebug() << " msg " << msg;
            }
        }
            break;
        default:
            break;
    }
    for (int i=0; i<m_infoEditList.count(); i++)
    {
      //  m_infoEditList[i]->setText("");
       // m_infoEditList[i]->setEnabled(false);
        //sukai
         update_infoEditListSetText_new("",false, i);
    }
   //  usleep(1000*1000*05);
//    QString msg="/api/markers/query_name_list";
//    sendMsg(msg);
   updateTimer->start();
    m_OKButton.setEnabled(false);
    m_CancelButton.setEnabled(false);

}

/**************************************************************************
* 函数名称：m_infoEditListSetText
* 函数功能：取右边栏数据
* 输入参数：无
* 输出参数：无
* 返回数值：void
* 创建人员：
* 创建时间：2021-05-25
* 修改人员：
* 修改时间：
**************************************************************************/
void KSDemoDlgtaskTme::m_infoEditListSetText(QList<QString> &infoTextList)
{


    for (int i=0; i<m_infoEditList.count(); i++)
    {

        switch (i){//QLineEdit
            case 0:
                {
                   QLineEdit *pEdit = (QLineEdit *) m_infoEditList[i];
                   qDebug() << "pEdit->text: "<<pEdit->text();
                       infoTextList.append(pEdit->text());

                }

                break;
            case 1:
            {
                QLineEdit *pEdit = (QLineEdit *) m_infoEditList[i];
                infoTextList.append(pEdit->text());
            }

                break;
            case 2://QComboBox
            {
                QComboBox *pEdit = (QComboBox *) m_infoEditList[i];
                qDebug() << "pEdit->currentText(): "<<pEdit->currentText();
                infoTextList.append(pEdit->currentText());

            }

                break;
            case 3://QComboBox
            {
                QComboBox *pEdit = (QComboBox *) m_infoEditList[i];
                infoTextList.append(pEdit->currentText());

            }
                break;
            case 4://QComboBox
            {   //markName
                QComboBox *pEdit = (QComboBox *) m_infoEditList[i];
                QString editFirstMsg = pEdit->currentText();
               int i= pEdit->currentIndex();
               //sukai EMPTY提示用户
               if(i==0){
                   infoTextList.append("EMPTY");
               }else{
                   infoTextList.append(pEdit->currentText());
               }


            }
                break;
            case 5://QDateTimeEdit
            {
                QDateTimeEdit *pEdit = (QDateTimeEdit *) m_infoEditList[i];
                qDebug() << pEdit->text();
                infoTextList.append(pEdit->text());

            }
                break;
            case 6://QDateTimeEdit
            {
                QDateTimeEdit *pEdit = (QDateTimeEdit *) m_infoEditList[i];
                qDebug() << pEdit->text();
                infoTextList.append(pEdit->text());

            }
                break;
            case 7://QComboBox
            {
                QComboBox *pEdit = (QComboBox *) m_infoEditList[i];
                infoTextList.append(pEdit->currentText());

            }
                break;
            case 8://QLineEdi
            {
//                QLineEdit *pEdit = (QLineEdit *) m_infoEditList[i];
//                qDebug() << "pEdit->text: "<<pEdit->text();
//                infoTextList.append(pEdit->text());
                QComboBox *pEdit = (QComboBox *) m_infoEditList[i];
                infoTextList.append(pEdit->currentText());

//

            }
                break;
            default:
                qDebug() << "无效";

        }

        m_infoEditList[i]->setEnabled(false);
//        if(i==2){
//            m_infoEditList[i]->setEnabled(true);
//        }else{
//          m_infoEditList[i]->setEnabled(false);
//        }
    }

}

/**************************************************************************
* 函数名称：onCancelButtonClicked
* 函数功能：OKButton点击槽函数，不操作
* 输入参数：无
* 输出参数：无
* 返回数值：void
* 创建人员：
* 创建时间：2021-03-20
* 修改人员：
* 修改时间：
**************************************************************************/
void KSDemoDlgtaskTme::onCancelButtonClicked()
{
    for (int i=0; i<m_infoEditList.count(); i++)
    {
      //  m_infoEditList[i]->setText("");
      //  m_infoEditList[i]->setEnabled(false);
        //sukai
         update_infoEditListSetText_new("",false, i);
    }
    m_OKButton.setEnabled(false);
    m_CancelButton.setEnabled(false);
}
/**************************************************************************
* 函数名称：~KsUserManageDlg
* 函数功能：目标点管理对话框析构函数
* 输入参数：无
* 输出参数：无
* 返回数值：void
* 创建人员：
* 创建时间：2021-03-20
* 修改人员：
* 修改时间：
**************************************************************************/
KSDemoDlgtaskTme::~KSDemoDlgtaskTme()
{
    qDebug() << "KSDemoDlgtaskTme::~KSDemoDlgtaskTme()";
    m_db.close();
}

//刷新数据
void KSDemoDlgtaskTme::onUpdate() {
    item_model->clear();
    //sukai //增加表格列名
    addHeaderData();
QString msg="/api/time/query";
sendMsg(msg);
//usleep(1000*1000*05);

qDebug() << "onUpdate setdata";

//恢复数据更新一下
IIMTDriver::getInstance()->kSDemoDlg_task_time_list_flg=1;


updateTimer->stop();
}
void KSDemoDlgtaskTme::on_mapnames_currentIndexChanged(const QString &arg1)
{
    qDebug()<<"===222223444= "<<arg1;

//    markNameqbox->clear();
//    QList<TestInfo> testInfos =   IIMTDriver::getInstance()->testInfos;
//    for (int i = 0; i <testInfos.size() ; ++i) {
//        markNameqbox->addItem(testInfos.at(i).TargetName);
//    }


}
